package com.br.fsm.projectdelivery.controlador;

import java.util.ArrayList;

import com.br.fsm.projectdelivery.basica.Usuario;
import com.br.fsm.projectdelivery.excecao.ControladorException;
import com.br.fsm.projectdelivery.excecao.RepositorioException;
import com.br.fsm.projectdelivery.repositorio.IRepositorioUsuario;
import com.br.fsm.projectdelivery.repositorio.RepositorioUsuario;

public class ControladorUsuario extends ControladorBasico implements IControladorUsuario {

	private IRepositorioUsuario repositorioUsuario;
	private static ControladorUsuario instance;

	private ControladorUsuario() {
		super();
		repositorioUsuario = (IRepositorioUsuario) RepositorioUsuario
				.getInstance();
	}

	public static ControladorUsuario getInstance() {
		if (instance == null) {
			instance = new ControladorUsuario();
		}
		return instance;
	}
	
	@Override
	public Usuario getUsuarioById(int id) throws ControladorException {
		try {
			return repositorioUsuario.getUsuarioById(id);
		} catch (RepositorioException e) {
			throw new ControladorException(e.getMessage());
		}
	}

	@Override
	public ArrayList<Usuario> getAllUsuario() throws ControladorException {
		try {
			return repositorioUsuario.getAllUsuario();
		} catch (RepositorioException e) {
			throw new ControladorException(e.getMessage());
		}
	}

	@Override
	public void insertUsuario(Usuario usuario) throws ControladorException {
		try {
			repositorioUsuario.insertUsuario(usuario);
		} catch (RepositorioException e) {
			throw new ControladorException(e.getMessage());
		}
	}

	@Override
	public void updateUsuario(Usuario usuario) throws ControladorException {
		try {
			repositorioUsuario.updateUsuario(usuario);
		} catch (RepositorioException e) {
			throw new ControladorException(e.getMessage());
		}
	}

	@Override
	public void removeUsuario(Usuario usuario) throws ControladorException {
		try {
			repositorioUsuario.removeUsuario(usuario);
		} catch (RepositorioException e) {
			throw new ControladorException(e.getMessage());
		}
	}
}
